package network.TCP;

/**
 * Created with IntelliJ IDEA
 * Description:Socket学习
 * User:22954
 * Date:2024-04-03
 * Time:17:16
 */
public class TCP_ {
    /*
    TCP协议:传输控制协议
        1.使用TCP协议需先建立TCP连接,形成传输数据通道
        2.可靠----1'建立连接通过"三次握手"协议
                        客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SENT状态
                        服务器端收到SYN报文,回应一个SYN(SEQ=y) ACK(ACK=x+1)报文,进入SYN_RECV状态
                        客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态
                 2'通过序号解决报文乱序/丢失、超时重传、拥塞控制、滑动窗口、检验和等方式保证数据传输的可靠性
        3.TCP协议进行通信的两个应用进程 服务端/客户端
        4.在连接中可进行大数据量的传输----数据以字节流形式传输
        5.传输完成,通过"第四次握手"释放连接
        6.效率低
    ============================================================
    Java通过Socket实现TCP网络编程
    Socket:
        (Socket)套接字是一个抽象层,通过端口对网络中不同主机上的应用进程之间进行双向通信
        应用程序可以通过socket通过网络 发送/接收(IO) 数据,可进行像对文件一样的打开/读写/关闭...操作。
        Socket允许程序将网络当成流,数据在两个socket中通过IO传输
        一般称呼: 主动发起通信的程序----客户端  等待通信的程序----服务端
    ============================================================
    TCP细节:
        服务端通过ServerSocket占用指定端口
        客户端通过Socket占用随机端口进行连接----端口由系统随机分配,每次连接不固定
        客户端与服务端的连接实际是两个端口的连接
     */
}
